﻿using System.Text;
using System.Text.Json;

namespace OpenAIProxy;

public interface ITokenAccumulator
{
    void Append(string dataLine);
    (string Content, int TokenCount) GetAccumulatedResponse();
}

// public class TokenAccumulator : ITokenAccumulator
// {
//     private readonly ITokenCounter _tokenCounter;
//     private readonly StringBuilder _contentBuilder = new();
//     private int? _tokenCount;
//
//     public TokenAccumulator(ITokenCounter tokenCounter)
//     {
//         _tokenCounter = tokenCounter;
//     }
//
//     public void Append(string dataLine)
//     {
//         var jsonText = dataLine["data: ".Length..];
//         var jsonData = JsonDocument.Parse(jsonText);
//         
//         var content = jsonData.RootElement
//             .GetProperty("choices")[0]
//             .GetProperty("delta")
//             .TryGetProperty("content", out var contentProp) 
//             ? contentProp.GetString() 
//             : null;
//         
//         if (!string.IsNullOrEmpty(content))
//         {
//             _contentBuilder.Append(content);
//             
//             _tokenCount = (_tokenCount ?? 0) + _tokenCounter.CalculateTokens(content);
//         }
//     }
//
//     public (string Content, int TokenCount) GetAccumulatedResponse()
//     {
//         var content = _contentBuilder.ToString();
//         return (content, _tokenCount ?? _tokenCounter.CalculateTokens(content));
//     }
// }
